0d00e0ccd46bf751e0d0059ad72dabf5e36daadd,impl/src/main/java/com/sun/faces/application/NavigationHandlerImpl.java,NavigationHandlerImpl,handleNavigation,#FacesContext#String#String#String#,203

Before Change


                                                 SharedUtils.evaluateExpressions(context, parameters),
                                                 caseStruct.navCase.isIncludeViewParams());
                try {
                    if (LOGGER.isLoggable(Level.FINE)) {
                        LOGGER.log(Level.FINE, "Redirecting to path {0} for outcome {1}and viewId {2}", new Object[]{redirectUrl, outcome, caseStruct.viewId});
                    }
                    // encode the redirect to ensure session state
                    // is maintained
                    updateRenderTargets(context, caseStruct.viewId);
                    flash.setRedirect(true);
                    extContext.redirect(redirectUrl);
                } catch (java.io.IOException ioe) {
                    if (LOGGER.isLoggable(Level.FINE)) {
                        LOGGER.log(Level.FINE,"jsf.redirect_failed_error",
                                   redirectUrl);
                    }
                    throw new FacesException(ioe.getMessage(), ioe);
                }
                context.responseComplete();
               if (LOGGER.isLoggable(Level.FINE)) {
                   LOGGER.log(Level.FINE, "Response complete for {0}", caseStruct.viewId);
               }
            } else {
                UIViewRoot newRoot = viewHandler.createView(context,
                                                            caseStruct.viewId);
                updateRenderTargets(context, caseStruct.viewId);
                context.setViewRoot(newRoot);
                FlowHandler flowHandler = context.getApplication().getFlowHandler();
                if (null != flowHandler && !isDidTransition(context)) {
                    flowHandler.transition(context, 
                            caseStruct.currentFlow, caseStruct.newFlow, 
                            caseStruct.facesFlowCallNode, caseStruct.viewId);
                    setDidTransition(context, false);
                }
                if (LOGGER.isLoggable(Level.FINE)) {
                    LOGGER.log(Level.FINE, "Set new view in FacesContext for {0}", caseStruct.viewId);
                }
            }

After Change


                                                    evaluateExpressions(context, parameters),
                                                    caseStruct.navCase.isIncludeViewParams());
                try {
                    if (LOGGER.isLoggable(FINE)) {
                        LOGGER.log(FINE, 
                            "Redirecting to path {0} for outcome {1}and viewId {2}",
                            new Object[] { redirectUrl, outcome, caseStruct.viewId });
                    }
                    
                    // Encode the redirect to ensure session state
                    // is maintained
                    updateRenderTargets(context, caseStruct.viewId);
                    flash.setRedirect(true);
                    extContext.redirect(redirectUrl);
                } catch (java.io.IOException ioe) {
                    if (LOGGER.isLoggable(FINE)) {
                        LOGGER.log(FINE, "jsf.redirect_failed_error", redirectUrl);
                    }
                    
                    throw new FacesException(ioe.getMessage(), ioe);
                }
                
                context.responseComplete();
                
                if (LOGGER.isLoggable(FINE)) {
                    LOGGER.log(FINE, "Response complete for {0}", caseStruct.viewId);
                }
            } else {
                UIViewRoot newRoot = viewHandler.createView(context, caseStruct.viewId);
                updateRenderTargets(context, caseStruct.viewId);
                context.setViewRoot(newRoot);
                FlowHandler flowHandler = context.getApplication().getFlowHandler();
                if (flowHandler != null && !isDidTransition(context)) {
                    flowHandler.transition(context, caseStruct.currentFlow, caseStruct.newFlow, caseStruct.facesFlowCallNode, caseStruct.viewId);
                    setDidTransition(context, false);
                }
                
                if (LOGGER.isLoggable(FINE)) {
                    LOGGER.log(FINE, "Set new view in FacesContext for {0}", caseStruct.viewId);
                }
            }